-- BP 7.1.6 content: ModelClass syschar: 3 persistence-version: 7.1.6

INSERT INTO O_OBJ
	VALUES ("f56f9683-7c22-41f6-ab52-01fc5ee41850",
	'Multi-directional',
	1005,
	'MDP',
	'A multi-directional partitioning represents a two or more supertype 
partitionings of the same object or subset.',
	"00000000-0000-0000-0000-000000000000");
INSERT INTO O_TFR
	VALUES ("9067ee3b-deaf-4f58-b800-7d0d6f3dd033",
	"f56f9683-7c22-41f6-ab52-01fc5ee41850",
	'multi_directional_init',
	'An example of multi-directional subtyping is object A as supertype with subtype 
objects B and C in one direction and subtype objects D and E in the other.





Diagram:


+---------+   +---------+
|    B    |   |    C    |
|         |   |         |
+---------+   +---------+
     |             |
     +-------------+
            |
       +---------+
       |    A    |
       |         |
       +---------+
            |
     +-------------+       
     |             |
+---------+   +---------+
|    D    |   |    E    |
|         |   |         |
+---------+   +---------+      
      ',
	"ba5eda7a-def5-0000-0000-000000000000",
	1,
	'create object instance domain of DOM;
create object instance modeled_domain of MDOM;
relate domain to modeled_domain across R1;
create object instance objA of OBJ;
relate objA to modeled_domain across R105;
create object instance subA of SUB;
relate subA to objA across R107; 
// Subset B
create object instance subB of SUB;
create object instance psubB of PRP;
relate subB to psubB across R107;
create object instance non_psubB of NSB;
relate psubB to non_psubB across R108;
// Subset C
create object instance subC of SUB;
create object instance psubC of PRP;
relate subC to psubC across R107;
create object instance non_psubC of NSB;
relate psubC to non_psubC across R108;
// Supertype A1
create object instance superA1 of SUP;
create object instance chdA1 of CHD;
relate superA1 to objA across R134 using chdA1;
create object instance subtypeB of SBT;
relate superA1 to psubB across R122 using subtypeB;
// Object specialization for B is below.
create object instance subtypeC of SBT;
relate superA1 to psubC across R122 using subtypeC;
create object instance obsC of OBS;
relate obsC to subtypeC across R126;
create object instance sbsC of SBS;
relate sbsC to obsC across R125;
// Specialize across another supertype (direction)
// Subset D
create object instance subD of SUB;
create object instance psubD of PRP;
relate subD to psubD across R107;
create object instance non_psubD of NSB;
relate psubD to non_psubD across R108;
// Subset E
create object instance subE of SUB;
create object instance psubE of PRP;
relate subE to psubE across R107;
create object instance non_psubE of NSB;
relate psubE to non_psubE across R108;
// Supertype A2
create object instance superA2 of SUP;
create object instance chdA2 of CHD;
relate superA2 to objA across R134 using chdA2;
create object instance subtypeD of SBT;
relate superA2 to psubD across R122 using subtypeD;
create object instance obsD of OBS;
relate obsD to subtypeD across R126;
create object instance sbsD of SBS;
relate sbsD to obsD across R125;
create object instance subtypeE of SBT;
relate superA2 to psubE across R122 using subtypeE;
// Object specialization for E is below.
// Attributes
// Make the first one an identifier, as you can''t create instances without an 
// identifier.
create object instance attribute1 of ATR;
create object instance nonref1 of NRA;
relate attribute1 to nonref1 across R103;
create object instance objectAttribute1 of OA;
relate objectAttribute1 to objA across R129;
relate objectAttribute1 to attribute1 across R124;
create object instance identifier1 of ID;
create object instance participation1 of IDP;
relate identifier1 to attribute1 across R102 using participation1;
// Make the second one a specializer for subtype B.
create object instance attribute2 of ATR;
create object instance nonref2 of NRA;
relate attribute2 to nonref2 across R103;
create object instance attribution2 of SPA;
relate attribution2 to attribute2 across R124;
relate attribution2 to psubB across R130;
create object instance objectSpecialization2 of OBS;
relate attribution2 to objectSpecialization2 across R125;
relate objectSpecialization2 to subtypeB across R126;
// Make the third one a specializer for subtype E.
create object instance attribute3 of ATR;
create object instance nonref3 of NRA;
relate attribute3 to nonref3 across R103;
create object instance attribution3 of SPA;
relate attribution3 to attribute3 across R124;
relate attribution3 to psubE across R130;
create object instance objectSpecialization3 of OBS;
relate objectSpecialization3 to attribution3 across R125;
relate objectSpecialization3 to subtypeE across R126;
// Create an instance of subtype B
create object instance instance1 of INS;
relate instance1 to subB across R112;
create object instance instantiation1 of ITN;
relate instance1 to identifier1 across R101 using instantiation1;
// Create an instance of subtype C
create object instance instance2 of INS;
relate instance2 to subC across R112;
create object instance instantiation2 of ITN;
relate instance2 to identifier1 across R101 using instantiation2;
// Create an instance of subtype D
create object instance instance3 of INS;
relate instance3 to subD across R112;
create object instance instantiation3 of ITN;
relate instance3 to identifier1 across R101 using instantiation3;
// Create an instance of subtype E
create object instance instance4 of INS;
relate instance4 to subE across R112;
create object instance instantiation4 of ITN;
relate instance4 to identifier1 across R101 using instantiation4;',
	1,
	'',
	"00000000-0000-0000-0000-000000000000",
	0);
INSERT INTO O_ID
	VALUES (0,
	"f56f9683-7c22-41f6-ab52-01fc5ee41850");
INSERT INTO O_ID
	VALUES (1,
	"f56f9683-7c22-41f6-ab52-01fc5ee41850");
INSERT INTO O_ID
	VALUES (2,
	"f56f9683-7c22-41f6-ab52-01fc5ee41850");
INSERT INTO PE_PE
	VALUES ("f56f9683-7c22-41f6-ab52-01fc5ee41850",
	1,
	"6e3add14-c14c-40a1-95a3-bbc196442c2d",
	"00000000-0000-0000-0000-000000000000",
	4);
INSERT INTO EP_PKG_PROXY
	VALUES ("6e3add14-c14c-40a1-95a3-bbc196442c2d",
	"00000000-0000-0000-0000-000000000000",
	"c8b88000-dddc-4206-8410-2f69b8f86b67",
	'Object Subsystem Tests',
	'This package can be used to check various instantiation scenarios for the 
object subsystem.
Current usage: Create an unspecialized object, and create each of the types of 
specialized objects.',
	1000,
	'../Object Subsystem Tests.xtuml');
